/*
 * app_hub_api_event_link.h
 *
 *  Created on: 2023年7月24日
 *      Author: HXF
 */

#ifndef APP_HUB_API_EVENT_LINK_H_
#define APP_HUB_API_EVENT_LINK_H_

#include "app_hub_api_def.h"
#include "stdbool.h"
#include "app_log.h"

/**
 * @brief DS_app_hub_api_event_link_init 链表初始化
 * @param none
 * @return none
 */
void DS_app_hub_api_event_link_init(void);

/**
 * @brief DS_app_hub_api_usart_rx_event_link_is_empty 链表usart_rx_event_link判空
 * @param none
 * @return true 链表空；false 链表有数据
 */
bool DS_app_hub_api_usart_rx_event_link_is_empty(void);
/**
 * @brief DS_app_hub_api_usart_rx_event_link_push 尾插法添加到usart_rx_event_link链表
 * @param msg，推到链表的数据域的内容
 *        len，数据长度
 * @return 0 正常；其他 异常
 */
int DS_app_hub_api_usart_rx_event_link_push(void * msg, int len);
/**
 * @brief DS_app_hub_api_usart_rx_event_link_pop 头删法从usart_rx_event_link链表提取、删除
 * @param msg，从链表获取的数据域的内容
 *        ptr_len，获取的数据长度
 * @return 0 正常；其他 异常
 */
int DS_app_hub_api_usart_rx_event_link_pop(void * msg, int * ptr_len);
/**
 * @brief DS_app_hub_api_usart_tx_event_link_is_empty 链表usart_tx_event_link判空
 * @param none
 * @return true 链表空；false 链表有数据
 */
bool DS_app_hub_api_usart_tx_event_link_is_empty(void);
/**
 * @brief DS_app_hub_api_usart_tx_event_link_push 尾插法添加到usart_tx_event_link链表
 * @param msg，推到链表的数据域的内容
 *        len，数据长度
 * @return 0 正常；其他 异常
 */
int DS_app_hub_api_usart_tx_event_link_push(void * msg, int len);
/**
 * @brief DS_app_hub_api_usart_tx_event_link_re_push 头插法添加到usart_tx_event_link链表
 * @param msg，推到链表的数据域的内容
 *        len，数据长度
 * @return 0 正常；其他 异常
 */
int DS_app_hub_api_usart_tx_event_link_re_push(void * msg, int len);
/**
 * @brief DS_app_hub_api_usart_tx_event_link_pop 头删法从usart_tx_event_link链表表提取、删除
 * @param msg，从链表获取的数据域的内容
 *        ptr_len，获取的数据长度
 * @return 0 正常；其他 异常
 */
int DS_app_hub_api_usart_tx_event_link_pop(void * msg, int * ptr_len);
#if(0)
bool DS_app_hub_api_rf_rx_event_link_is_empty(void);
int DS_app_hub_api_rf_rx_event_link_push(hub_api_rx_evt_t *evt);
int DS_app_hub_api_rf_rx_event_link_pop(hub_api_rx_evt_t *evt);
bool DS_app_hub_api_rf_tx_event_link_is_empty(void);
int DS_app_hub_api_rf_tx_event_link_push(hub_api_tx_evt_t *evt);
int DS_app_hub_api_rf_tx_event_link_pop(hub_api_tx_evt_t *evt);
#endif
#endif /* APP_HUB_API_EVENT_LINK_H_ */
